Skip to content

Conversation

@HernaniSamuel
Copy link

@HernaniSamuel HernaniSamuel commented Jan 23, 2026

Clarify that the objects listed in the free-threading HOWTO are additional immortalizations specific to the free-threaded build.

This addresses the inconsistency reported in #144161, where sys.intern() documentation states that interned strings are not immortal, while the free-threading HOWTO suggested otherwise. Both are correct for their respective contexts (default vs. free-threaded builds).

Changes follow the suggestion by @Prometheus3375 in the issue discussion.


📚 Documentation preview 📚: https://cpython-previews--144176.org.readthedocs.build/

…build

Clarify that the objects listed in the free-threading HOWTO are
additional immortalizations specific to the free-threaded build.
This addresses the inconsistency with sys.intern() documentation,
which describes the default (mortal) behavior.
@python-cla-bot
Copy link

python-cla-bot bot commented Jan 23, 2026

All commit authors signed the Contributor License Agreement.

CLA signed

Copy link
Contributor

@sharktide sharktide left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would make much more sense to just add a note to sys.intern and PyUnicode_InternInPlace saying that the free-threaded build makes all interned strings immortal.

Prometheus3375

This comment was marked as outdated.

You must keep a reference to the result to benefit from interning.
.. note::
On the free-threaded build, all interned strings are :term:`immortal`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I messed up the suggestion, the right term is "free threading":

Suggested change
On the free-threaded build, all interned strings are :term:`immortal`.
On the :term:`free threaded <free threading>` build, all interned strings are :term:`immortal`.

Prometheus3375

This comment was marked as outdated.

@Prometheus3375

This comment was marked as outdated.

@ZeroIntensity
Copy link
Member

Phrase "free-threaded" is usually used with hyphen between the words, but in suggestion by ZeroIntensity it was left out.

"free threaded" is the more common spelling in the docs:

@vstinner
Copy link
Member

"free threaded" is the more common spelling in the docs

I confirm. No hyphen should be used, see the issue gh-144277.

@Prometheus3375
Copy link
Contributor

In this PR preposition was changed from "in the free threaded build" to "on the free threaded build". I believe that "in" is more correct because it can be rephrased as "inside the free threaded build" unlike "on" version. Quick check with LLM also told me that, but perhaps I am missing something.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting review docs Documentation in the Doc dir skip news

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

5 participants